/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package editorsvg.css;

import editorsvg.editor.atributos.Atributo;
import editorsvg.editor.documento.ElementoSVG;
import editorsvg.propiedades.Propiedad;

/**
 *
 * @author Jorge
 */
class CondicionAtributo extends Condicion {
    private String nombreAtributo;
    private String valor;
    private Condicion siguienteCondicion;

    public CondicionAtributo(String nombreAtributo, String valor, Condicion siguienteCondicion) {
        this.nombreAtributo = nombreAtributo;
        this.valor = valor;
        this.siguienteCondicion = siguienteCondicion;
    }

    @Override
    public String toString() {
        return nombreAtributo + "=" + valor;
    }

    @Override
    public boolean evaluar(ElementoSVG elemento, Regla regla) {
        Propiedad propiedad = elemento.getPropiedades().obtenerPropiedadAtributoXml(nombreAtributo);
        if (propiedad == null) {
            return false;
        }
             
        Atributo atributo = propiedad.getAtributo();
        if (atributo == null) {
            return false;
        }
        if (!atributo.equals(valor)) {
            return false;
        }
        if (siguienteCondicion == null) {
            if (regla != null) {
                regla.aplicarAsignaciones(elemento);
            }
            return true;
        }
        return siguienteCondicion.evaluar(elemento, regla);
    }            

    @Override
    public int getEspecificidad() {
        return 10000 + (siguienteCondicion != null ? siguienteCondicion.getEspecificidad() : 0);
    }
}
